#ifndef _MODULEDATA_
#define _MODULEDATA_

#include "Process.h"
#include <string>
#include <list>
#include "Process.h"
#include "PortData.h"

class ChannelData;
using namespace std;

class ModuleData 
{
public:
	ModuleData(string name);
	virtual ~ModuleData();
	virtual void addChannelData(ChannelData* channelData);
	virtual void addModuleData(ModuleData* moduleData);
	virtual void addProcess(Process* process);
	virtual list<ModuleData*>* getModuleDataList();
	virtual list<ChannelData*>* getChannelDataList();
	virtual list<Process*>* getProcessList();
	virtual string getName();
	virtual void addPortData(PortData* portData);
	virtual list<PortData*>* getPortDataList();
	virtual void debug(int level = 0);
	virtual string getUID();
	static int getNextUID();

private:
	string mName;
	string mUID;
	list<ModuleData*> mModuleDataList;
	list<Process*> mProcessList;
	list<PortData*> mPortDataList;
	list<ChannelData*> mChannelDataList;
	static int mNextUID;
};

#endif